;;; compiled by jwz@thalidomide on Thu Jul 2 16:48:27 1992
;;; from file /u/jwz/emacs19/lisp/utils/cl.el
;;; emacs version 19.2.1 Lucid.
;;; bytecomp version 2.07; 17-jun-92.
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs18.
(if (and (boundp 'emacs-version)
(or (and (boundp 'epoch::version) epoch::version)
(string-lessp emacs-version "19")))
(error "This file was compiled for Emacs19."))
(byte-code "└┴!ê┬┴!ç" [provide cl require] 2)
(fset 'psetq '(macro . #[(&rest pairs) "G┴ëëëëëë╔ª╩U¼ä╦╠!ê┴뽬@ë9¼ê╦╧╨!\"êBA@BAAë¼V*┴ëë½¥@╙ ëDBBAë¼c+ƒ½û@@BBAA¬f*╓╫B┴F.ç" [pairs nil i assignments newsyms bindings forms symbols nforms 2 0 error "Odd number of arguments to `psetq'" var ptr "`psetq' expected a symbol, found '%s'." prin1-to-string newsym form gensym ptr2 ptr1 let setq] 8 "\
(psetq {VARIABLE VALUE}...): In parallel, set each VARIABLE to its VALUE.
All the VALUEs are evaluated, and then all the VARIABLEs are set.
Aside from order of evaluation, this is the same as `setq'."]))
Extract even and odd elements of LIST into two separate lists.
The argument LIST is separated in two strands, the even and the odd
numbered elements. Numbering starts with 0, so the first element
belongs in EVENS. No check is made that there is an even number of
elements to start with."])
(fset 'reassemble-argslists #[(argslists) "└┴┬├\"\"╞╔\n╔Y¼Æ┬╦\"B\n╠\\ë\n¬iƒ,ç" [apply min mapcar length argslists minlen nil result T$$_22 0 i #[(sublist) " £ç" [sublist i] 2] 1] 6 "\
(reassemble-argslists ARGSLISTS).
ARGSLISTS is a list of sequences. Return a list of lists, the first
sublist being all the entries coming from ELT 0 of the original
sublists, the next those coming from ELT 1 and so on, until the
shortest list is exhausted."])
(fset 'build-klist #[(argslist acceptable) "<½å┴G!¼ä┬├!ê<½å┼╞\"¼ä┬╟!ê╚ ╩ ë╠!Lê ½å═!¬ì╧ JC═!)ëA@@┼╞\"¼ê┬╙╘!\"ê╒\"ë@╚╚█!¼¥▄\"ë½çBAë@¬].ç" [argslist evenp error "Odd number of keyword-args" acceptable every keywordp "Second arg should be a list of keywords" nil *mvalues-count* gensym it unzip-list copy-sequence *mvalues-values* 1 T$$_23 forms keywords "Expected keywords, found `%s'" prin1-to-string pairlis auxlist ptr this auxval alist endp assoc] 5 "\
Decode a keyword argument list ARGSLIST for keywords in ACCEPTABLE.
ARGSLIST is a list, presumably the &rest argument of a call, whose
even numbered elements must be keywords.
ACCEPTABLE is a list of keywords, the only ones that are truly acceptable.
The result is an alist containing the arguments named by the keywords
in ACCEPTABLE, or nil if something failed."])
(fset 'duplicate-symbols-p #[(list) "└┴ <½å┼╞\"¼ä╟╚!ê╔╩\"ê╔╦\"ê╔╠\"ê*ç" [nil gensym propname duplicates list every symbolp error "A list of symbols is needed" mapcar #[(x) "└ \n├#ç" [put x propname 0] 4] #[(x) "└ \n \nNT#ç" [put x propname] 5] #[(x) " N┬V¡àBëç" [x propname 1 duplicates] 2]] 3 "\
Find all symbols appearing more than once in LIST.
Return a list of all such duplicates; `nil' if there are no duplicates."])
(fset 'defkeyword '(macro . #[(x &optional docstring) "9½ç┴┬DEç├─┼!\"ç" [x defconst quote error "`%s' is not a symbol" prin1-to-string] 4 "\
Make symbol X a keyword (symbol whose value is itself).
Optional second argument is a documentation string for it."]))
(case EXPR . CASES) => evals EXPR, chooses from CASES on that value.
EXPR -> any form
CASES -> list of clauses, non empty
CLAUSE -> HEAD . BODY
HEAD -> t = catch all, must be last clause
-> otherwise = same as t
-> nil = illegal
-> atom = activated if (eql EXPR HEAD)
-> list of atoms = activated if (member EXPR HEAD)
BODY -> list of forms, implicit PROGN is built around it.
EXPR is evaluated only once."]))
(fset 'ecase '(macro . #[(expr &rest cases) "└ ┬ \"┼!╞=½ä╟╚!ê╞╟╔╩D╠ DFDB═ DC╬╧ƒ\"E*ç" [gentemp newsym case-clausify cases clauses caar t error "No clause-head should be `t' or `otherwise' for `ecase'" "ecase on %s = %s failed to take any branch." quote expr prin1-to-string let list* cond] 6 "\
(ecase EXPR . CASES) => like `case', but error if no case fits.
`t'-clauses are not allowed."]))
(fset 'case-clausify #[(cases newsym) "A@─╞ !¼≡@Aë¼ë╔╩╦!\"ê¬╨╠=¼å═=½Æ╞\n!¼ä╔╬!ê╠BB¬▓:¼É╧╤DEBB¬¥<½É╥╤DEBB¬ê╔╙╦!\"ê* A\nA @¬,ç" [cases currentpos nextpos curclause nil result endp body head error "Case clauses cannot have null heads: `%s'" prin1-to-string t otherwise "Clause with `t' or `otherwise' head must be last" eql newsym quote cl-member "Don't know how to parse case clause `%s'."] 5 "\
CASE-CLAUSIFY CASES NEWSYM => clauses for a 'cond'
Converts the CASES of a [e]case macro into cond clauses to be
evaluated inside a let that binds NEWSYM. Returns the clauses in
STEPFORMS must be a list of symbols or lists. In the second case, the
lists must start with a symbol and contain up to two more forms. In
the STEPFORMS, a symbol is the same as a (symbol). The other 2 forms
are the initial value (def. NIL) and the form to step (def. itself).
Initializations and steppings are done in the sequence they are written.
The ENDFORMS are a list (CONDITION . ENDBODY). If the CONDITION
evaluates to true in any iteration, ENDBODY is evaluated and the last
form in it is returned.
The BODY (which may be empty) is evaluated at every iteration, with
the symbols of the STEPFORMS bound to the initial or stepped values."]))
(fset 'check-do-stepforms #[(forms) "<¼ç┴┬├!\"ç─┼\"ç" [forms error "Init/Step form for do[*] should be a list, not `%s'" prin1-to-string mapcar #[(entry) "9¼Å<½ì@9½êG┴W½é┬ç├─┼!\"ç" [entry 4 t error "Init/Step must be symbol or (symbol [init [step]]), not `%s'" prin1-to-string] 4]] 4 "\
True if FORMS is a valid stepforms for the do[*] macro (q.v.)"])
(fset 'check-do-endforms #[(forms) "<½é┴ç┬├─!\"ç" [forms t error "Termination form for do macro should be a list, not `%s'" prin1-to-string] 4 "\
True if FORMS is a valid endforms for the do[*] macro (q.v.)"])
FORMS is the stepforms part of a DO* macro (q.v.). This function
constructs an s-expression that does the stepping at the end of an
iteration."])
(fset 'select-stepping-forms #[(forms) "└ └½¥@ë<½É\nG┼U½è╞╟\n!\n@D\"Aë¼cƒ+ç" [nil forms entry ptr result 3 append caddr] 4 "\
Separate only the forms that cause stepping."])
(fset 'dolist '(macro . #[(stepform &rest body) "<¼ë┴┬├!\"ꬣ@9¼è┴─├@!\"ê¬ìG┼V½ç┴╞├!\"ê@╚! ╩!╠═╬╧CBBD E╤╥DCEE+ç" [stepform error "Stepform for `dolist' should be (VAR LIST [RESULT]), not `%s'" prin1-to-string "First component of stepform should be a symbol, not `%s'" 3 "Too many components in stepform `%s'" var cadr listform caddr resultform progn mapcar function lambda body let nil] 6 "\
(dolist (VAR LIST [RESULTFORM]) . BODY): do BODY for each elt of LIST.
The RESULTFORM defaults to nil. The VAR is bound to successive
elements of the value of LIST and remains bound (to the nil value) when the
RESULTFORM is evaluated."]))
(fset 'dotimes '(macro . #[(stepform &rest body) "<¼ë┴┬├!\"ꬣ@9¼è┴─├@!\"ê¬ìG┼V½ç┴╞├!\"ê@╚! ╩!╠ ╬ DC╧╨╤╥╙EEC╘ED$E,ç" [stepform error "Stepform for `dotimes' should be (VAR COUNT [RESULT]), not `%s'" prin1-to-string "First component of stepform should be a symbol, not `%s'" 3 "Too many components in stepform `%s'" var cadr countform caddr resultform gentemp newsym let* list* do* 0 + 1 >= body] 9 "\
(dotimes (VAR COUNTFORM [RESULTFORM]) . BODY): Repeat BODY, counting in VAR.
The COUNTFORM should return a positive integer. The VAR is bound to
successive integers from 0 to COUNTFORM-1 and the BODY is repeated for
each of them. At the end, the RESULTFORM is evaluated and its value
returned. During this last evaluation, the VAR is still bound, and its
value is the number of times the iteration occurred. An omitted RESULTFORM
defaults to nil."]))
(fset 'do-symbols '(macro . #[(stepform &rest body) "<¼ë┴┬├!\"ꬣ@9¼è┴─├@!\"ê¬ìG┼V½ç┴╞├!\"ê@╚! ╩!╠═╬╧CBBD E╤╥DCEE+ç" [stepform error "Stepform for `do-symbols' should be (VAR OBARRAY [RESULT]), not `%s'" prin1-to-string "First component of stepform should be a symbol, not `%s'" 3 "Too many components in stepform `%s'" var cadr oblist caddr resultform progn mapatoms function lambda body let nil] 6 "\
(do_symbols (VAR [OBARRAY [RESULTFORM]]) . BODY)
The VAR is bound to each of the symbols in OBARRAY (def. obarray) and
the BODY is repeatedly performed for each of those bindings. At the
end, RESULTFORM (def. nil) is evaluated and its value returned.
During this last evaluation, the VAR is still bound and its value is nil.
Is the same as (do-symbols (VAR obarray RESULTFORM) . BODY)."]))
(fset 'loop '(macro . #[(&rest body) "<¼ä┴┬!ç├─\"ê┼╞BBç" [body error "Body of `loop' should be a list of lists or nil" mapcar #[(component) "<?¡â┴┬!ç" [component error "Components of `loop' should be lists"] 2] while t] 3 "\
(loop . BODY) repeats BODY indefinitely and does not return.
Normally BODY uses `throw' or `signal' to cause an exit.
The forms in BODY should be lists, as non-lists are reserved for new features."]))
(fset 'first #[(x) "@ç" [x] 1 "\
Synonym for `car'"])
(fset 'second #[(x) "A@ç" [x] 1 "\
Return the second element of the list LIST."])
(fset 'third #[(x) "└ 8ç" [2 x] 2 "\
Return the third element of the list LIST."])
(fset 'fourth #[(x) "└ 8ç" [3 x] 2 "\
Return the fourth element of the list LIST."])
(fset 'fifth #[(x) "└ 8ç" [4 x] 2 "\
Return the fifth element of the list LIST."])
(fset 'sixth #[(x) "└ 8ç" [5 x] 2 "\
Return the sixth element of the list LIST."])
(fset 'seventh #[(x) "└ 8ç" [6 x] 2 "\
Return the seventh element of the list LIST."])
(fset 'eighth #[(x) "└ 8ç" [7 x] 2 "\
Return the eighth element of the list LIST."])
(fset 'ninth #[(x) "└ 8ç" [8 x] 2 "\
Return the ninth element of the list LIST."])
(fset 'tenth #[(x) "└ 8ç" [9 x] 2 "\
Return the tenth element of the list LIST."])
(fset 'rest #[(x) "Aç" [x] 1 "\
Synonym for `cdr'"])
(fset 'endp #[(x) "<½â?ç┴┬├!\"ç" [x error "endp received a non-cons, non-null argument `%s'" prin1-to-string] 4 "\
t if X is nil, nil if X is a cons; error otherwise."])
(fset 'last #[(x) "<¼ä┴┬!êëA┼!¼ÉAAë*¬k*ç" [x error "Arg to `last' must be a list" next-cons current-cons endp G$$_8 G$$_9] 3 "\
Returns the last link in the list LIST."])
(fset 'list-length #[(x) "└ ë┬¼┬╟!½ä╚¬¿╟A!½è╔\\╚¬ÿ=½ì└V½ç┬╚¬å╩\\╦!Aë*¬;,ç" [0 x nil ready slow fast n endp t 1 2 cddr G$$_10 G$$_11] 5 "\
Returns the length of a non-circular list, or `nil' for a circular one."])
Return a new alist with KEY paired with ITEM; otherwise like ALIST.
Does not copy ALIST."])
(fset 'pairlis #[(keys data &optional alist) "G GU¼ä┬├!ê @@ ╩!¼Ü╦ # AA@@¬a -ç" [keys data error "Keys and data should be the same length" kptr dptr key item alist result endp acons] 4 "\
Return a new alist with each elt of KEYS paired with an elt of DATA;
optional 3rd arg ALIST is nconc'd at the end. KEYS and DATA must
(fset 'some #[(pred seq &rest moreseqs) "└┴\n\"!┼┼┼ë @\n¼ú╦ !¼¥╠\n\"ë½ç╬ Aë @\n¬Y.ç" [reassemble-argslists list* seq moreseqs args nil ready result applyval remaining current endp apply pred t] 5 "\
Test PREDICATE on each element of SEQUENCE; is it ever non-nil?
Extra args are additional sequences; PREDICATE gets one arg from each
sequence and we advance down all the sequences together in lock-step.
A sequence means either a list or a vector."])
(fset 'every #[(pred seq &rest moreseqs) "└┴\n\"!┼╟┼ ë\n@¼ó╠\n!¼£═\"ë ¼å╟┼\nAë\n@¬Z.ç" [reassemble-argslists list* seq moreseqs args nil ready t result applyval remaining current endp apply pred] 5 "\
Test PREDICATE on each element of SEQUENCE; is it always non-nil?
Extra args are additional sequences; PREDICATE gets one arg from each
sequence and we advance down all the sequences together in lock-step.
A sequence means either a list or a vector."])
(fset 'notany #[(pred seq &rest moreseqs) "└┴\n\"!┼╟┼ ë\n@¼ó╠\n!¼£═\"ë ½å╟┼\nAë\n@¬Z.ç" [reassemble-argslists list* seq moreseqs args nil ready t result applyval remaining current endp apply pred] 5 "\
Test PREDICATE on each element of SEQUENCE; is it always nil?
Extra args are additional sequences; PREDICATE gets one arg from each
sequence and we advance down all the sequences together in lock-step.
A sequence means either a list or a vector."])
(fset 'notevery #[(pred seq &rest moreseqs) "└┴\n\"!┼┼┼ë @\n¼ó╦ !¼£╠\n\"ë¼å╬╬ Aë @\n¬Z.ç" [reassemble-argslists list* seq moreseqs args nil ready result applyval remaining current endp apply pred t] 5 "\
Test PREDICATE on each element of SEQUENCE; is it sometimes nil?
Extra args are additional sequences; PREDICATE gets one arg from each
sequence and we advance down all the sequences together in lock-step.
A sequence means either a list or a vector."])
(fset 'setelt #[(seq n newval) "G\n├W¼à\n Y½ç─┼\n #¬₧<½ê╞\n#¬Æ╚!½ç\nI¬å─╔╩!\")ç" [seq l n 0 error "N(%d) should be between 0 and %d" setnth newval arrayp "SEQ should be a sequence, not `%s'" prin1-to-string] 4 "\
In SEQUENCE, set the Nth element to NEWVAL. Returns NEWVAL.
Produce multiple values (zero or more). Each arg is one value.
See also `multiple-value-bind', which is one way to examine the
multiple values produced by a form. If the containing form or caller
does not check specially to see multiple values, it will see only
the first value."])
(fset 'values-list #[(&optional val-forms) "<¼ç┴┬├!\"êëG@ç" [val-forms error "Argument to values-list must be a list, not `%s'" prin1-to-string *mvalues-values* *mvalues-count*] 5 "\
Produce multiple values (zero or mode). Each element of LIST is one value.
This is equivalent to (apply 'values LIST)."])
(fset 'multiple-value-list '(macro . #[(form) "└┴┬├E─┼╞DC╟┼E╔┬╩╦D└┴┬╠E┴╦═╬┼DDE╩╦DFFFEç" [progn setq *mvalues-count* nil let it (gensym) set form if copy-sequence *mvalues-values* 1 list symbol-value] 15 "\
Execute FORM and return a list of all the (multiple) values FORM produces.
Return the least common multiple of all the arguments.
The arguments must be integers and there must be at least one of them."])
(fset 'isqrt #[(number) "└ !½à┬├ \"ç ─U½é─ç┼─╚ ¼á Ñ\\╩ÑëU«ç┼\\U ¬\\ë_ V½å┼Z¬é+ç" [minusp number error "Argument to `isqrt' (%d) must not be negative" 0 1 approx new nil done 2] 4 "\
Return the integer square root of NUMBER.
NUMBER must not be negative. Result is largest integer less than or
equal to the real square root of the argument."])
(fset 'floor #[(number &optional divisor) "¼ë º½à┬ ├\"ç─╞ ë╚ \"Lê½å╔\n!¬î╦JC\n╔\n!)═8A@@├U½å┬├ë\"¬«╤!½ê┬\"¬á├U½ê┬[├\"¬Æ╦\\[┬ _Z\"),ç" [divisor number values 0 nil *mvalues-count* gensym it safe-idiv copy-sequence *mvalues-values* 1 T$$_25 2 s r q plusp] 6 "\
Divide DIVIDEND by DIVISOR, rounding toward minus infinity.
DIVISOR defaults to 1. The remainder is produced as a second value."])
(fset 'ceiling #[(number &optional divisor) "¼ë º½à┬ ├\"ç─╞ ë╚ \"Lê½å╔\n!¬î╦JC\n╔\n!)═8A@@├U½å┬├ë\"¬¿╤!½ê┬\"¬Ü├U¼Ä╦\\ _Z┬\",ç" [divisor number values 0 nil *mvalues-count* gensym it safe-idiv copy-sequence *mvalues-values* 1 T$$_26 2 s r q minusp] 5 "\
Divide DIVIDEND by DIVISOR, rounding toward plus infinity.
DIVISOR defaults to 1. The remainder is produced as a second value."])
(fset 'truncate #[(number &optional divisor) "¼ë º½à┬ ├\"ç─╞ ë╚ \"Lê½å╔\n!¬î╦JC\n╔\n!)═8A@@├U½å┬├ë\"¬º╤!½ê┬\"¬Ö├U¼ì[ _Z┬\",ç" [divisor number values 0 nil *mvalues-count* gensym it safe-idiv copy-sequence *mvalues-values* 1 T$$_27 2 s r q plusp] 5 "\
Divide DIVIDEND by DIVISOR, rounding toward zero.
DIVISOR defaults to 1. The remainder is produced as a second value."])
(fset 'round #[(number &optional divisor) "¼ë º½à┬ ├\"ç─╞ ë╚ \"Lê½å╔\n!¬î╦JC\n╔\n!)═8A@@╤!╤!ZV½ê╦\\¬ôU½î╙!½å╦\\_ _Z┬\"-ç" [divisor number values 0 nil *mvalues-count* gensym it safe-idiv copy-sequence *mvalues-values* 1 T$$_28 2 s r q abs other-r oddp] 5 "\
Divide DIVIDEND by DIVISOR, rounding to nearest integer.
DIVISOR defaults to 1. The remainder is produced as a second value."])
(fset 'mod #[(number divisor) "└┬ ë─\"Lê ½å╟!¬ï╔JC╟!)ë\nA@\n@+ç" [nil *mvalues-count* gensym it floor number divisor copy-sequence *mvalues-values* 1 T$$_29 r q] 5 "\
Return remainder of X by Y (rounding quotient toward minus infinity).
That is, the remainder goes with the quotient produced by `floor'."])
(fset 'rem #[(number divisor) "└┬ ë─\"Lê ½å╟!¬ï╔JC╟!)ë\nA@\n@+ç" [nil *mvalues-count* gensym it truncate number divisor copy-sequence *mvalues-values* 1 T$$_30 r q] 5 "\
Return remainder of X by Y (rounding quotient toward zero).
That is, the remainder goes with the quotient produced by `truncate'."])
(fset 'safe-idiv #[(a b) "º½ä º¼ä┬├!ê ─U½à┬┼\"ê╞!╞ !Ñ ╩!╩ !_ _ _Z═ #-ç" [a b error "Arguments to `safe-idiv' must be numbers" 0 "Cannot divide %d by zero" abs absa absb q signum s r values] 4 "\
SAFE-IDIV A B => Q R S
Q=|A|/|B|, R is the rest, S is the sign of A/B."])
(defstruct NAME [DOC-STRING] . SLOTS) define NAME as structure type.
NAME must be a symbol, the name of the new structure. It could also
be a list (NAME . OPTIONS), but not all options are supported currently.
As of Dec. 1986, this is supporting :conc-name, :copier and :predicate
completely, :include arguably completely and :constructor only to
change the name of the default constructor. No BOA constructors allowed.
The DOC-STRING is established as the 'structure-doc' property of NAME.
The SLOTS are one or more of the following:
SYMBOL -- meaning the SYMBOL is the name of a SLOT of NAME
list of SYMBOL and VALUE -- meaning that VALUE is the initial value of
the slot.
`defstruct' defines functions `make-NAME', `NAME-p', `copy-NAME' for the
structure, and functions with the same name as the slots to access
them. `setf' of the accessors sets their values."]))
(fset 'parse$defstruct$args #[(args) "└ë┴└┬└ë \n@9½è\n@ └¬ƒ\n@<½ò╦\n!9½Ä╦\n! ╠\n!¬ä═╬!ê\nAë@;½è@A└╨ ë╥!Lê½å╙!¬ì╒JC╙!)╫8A@@╪ &.ç" [nil "" 0 initlist slots slotsn slotargs docstring options name args caar cdar error "First arg to `defstruct' must be symbol or (symbol ...)" *mvalues-count* gensym it process$slots copy-sequence *mvalues-values* 1 T$$_39 2 values] 8 "\
PARSE$DEFSTRUCT$ARGS ARGS => NAME OPTIONS DOCSTRING SLOTSN SLOTS INITLIST
NAME=symbol, OPTIONS=list of, DOCSTRING=string, SLOTSN=count of slots,
SLOTS=list of their names, INITLIST=alist (keyword . initform)."])
(fset 'process$slots #[(slots) "G┴ëë@╟!¼═9½ÉB╚╔!┴\n#¬»<½ó@9½£@╩!ëB╚╔!\n#*¬ê═╬╧!\"êAë@¬.*╨ƒ\nƒ#+ç" [slots nil initlist slotslist slotsn ptr this endp acons keyword-of cadr form name error "Slot should be symbol or (symbol ...), not `%s'" prin1-to-string values] 5 "\
PROCESS$SLOTS SLOTS => SLOTSN SLOTSLIST INITLIST
Converts a list of symbols or lists of symbol and form into the last 3
values returned by PARSE$DEFSTRUCT$ARGS."])
(fset 'parse$defstruct$options #[(name options slots) "└ !ë├P┼╞\nP!┼╚\nP! ┼\n╩P!╠╬╬╬╬╬╬╬╬╫╪\"ê┌ &.ç" [symbol-name name namestring "-" conc-name intern "make-" const "copy-" copier "-p" pred 0 moreslotsn nil moreslots moreinits option-head option-second option-rest these-slotsn these-slots these-inits mapcar #[(option) "└ !½Å ë├=«å─┼╞ !\")ç <âb└ @ë!âb╚ ! AA\në╠=½¥ ;½ä ¬Ä ¼â═¬ç─╬╞ !\"ëé`╨=½Ö 9½ê\n¼ä ¬å─┼╞ !\"ëé`╥=½Ö 9½ê\n¼ä ¬å─┼╞ !\"ëé`╘=½Ö 9½ê\n¼ä ¬å─┼╞ !\"ëé`╓=âS 9¼ê─╫╞ !\"ê N N Nº½å▐V¼ê─▀╞ !\"êα!Γ ë#Σ\n!Lê!½åσ&!¬ìτ!#JC&σ&!)(Θ(8*(A@+(@ë,▐V½Äφε+\"ê∩*\"0\\0∩1\"1∩2\"ë2,¬ì≤⌠\"«å─┼╞ !\")ç─┼╞ !\"ç" [keywordp option T$$_40 :named error "Can't recognize option `%s'" prin1-to-string option-head second option-second option-rest T$$_41 :conc-name "" "`%s' is invalid as `conc-name'" conc-name :copier copier :constructor const :predicate pred :include "Arg to `:include' should be a symbol, not `%s'" :structure-slotsn these-slotsn :structure-slots these-slots :structure-initforms these-inits 0 "`%s' is not a valid structure" nil *mvalues-count* gensym it process$slots copy-sequence *mvalues-values* 1 T$$_42 2 xtra-inits xtra-slots xtra-slotsn mapcar #[(xslot) " >?¡ë┬├─!─!#ç" [xslot these-slots error "`%s' is not a slot of `%s'" prin1-to-string option-second] 5] append moreslotsn moreslots moreinits cl-member (:print-function :type :initial-offset)] 5] options values] 9 "\
PARSE$DEFSTRUCT$OPTIONS NAME OPTIONS SLOTS => CONC-NAME CONST COPIER PRED
Returns at least those 4 values (a string and 3 symbols, to name the necessary
functions), might return also things discovered by actually
inspecting the options, namely MORESLOTSN MORESLOTS MOREINITS, as can
be created by :include, and perhaps a list of BOACONSTRUCTORS."])
Removes from INITLIST - an ALIST - any shadowed bindings."])
(fset 'extract$indices #[(initlist) "└┴─┼\"ê└ƒ+ç" [nil 0 index result mapcar #[(entry) "└ @\n#\n─\\ëç" [acons entry index result 1] 4] initlist entry] 3 "\
EXTRACT$INDICES INITLIST => indices list
Kludge. From a list of pairs (keyword . form) build a list of pairs
of the form (keyword . position in list from 0). Useful to precompute
some of the work of MAKE$STRUCTURE$INSTANCE."])
(fset 'build$accessors$for #[(name conc-name predicate slots slotsn) "└┴ëë┬Y¼÷╔\n╦8!P!═╬D╧╨╤C╥╤D╘╤TED╒╓╫╪╤D╪╬DDFDEEDEB┌╨╤█D╥╤D▄╤T█FD╒╓▌╪╤D╪╬DDFDEEEB▐▀8!DBTë )¬ßƒƒƒ#-ç" [0 nil "" canonic keywords alterators accessors i slotsn intern conc-name symbol-name slots fset quote function lambda object cond predicate aref t error "`%s' not a %s." prin1-to-string name defsetf newval aset "`%s' not a `%s'" defkeyword keyword-of G$$_13 values] 15 "\
BUILD$ACCESSORS$FOR NAME PREDICATE SLOTS SLOTSN => FSETS DEFSETFS KWDS
Generate the code for accesors and defsetfs of a structure called
NAME, whose slots are SLOTS. Also, establishes the keywords for the
slots names."])
(fset 'make$structure$instance #[(name args) "9¼ç┴┬├!\"êNNN╟ë \nº½å═V¼ç┴╬├!\"ê╧G!¼ê┴╤├!\"ê╟╙ ë╒!Lê½å╓!¬ì╪JC╓!)ëA@@▄▌\"¼ê┴▐├!\"ê▀α\"êßë\"@#╟$σ\"!¼öµ#D$B$\"Aë\"@#¬f$ƒ+╓!# \n\"τ\"!(╟$σ\"!¼¢ΘΩ( \"A!$B$\"A\"τ\"!(¬_$ƒ+δ∞B\".ç" [name error "`%s' is not a possible name for a structure" prin1-to-string :structure-initforms :structure-slotsn :structure-indices nil initializers initalist indices slotsn initforms 0 "`%s' is not a defined structure" evenp args "Slot initializers `%s' not of even length" *mvalues-count* gensym it unzip-list copy-sequence *mvalues-values* 1 T$$_43 specvals speckwds every keywordp "All of the names in `%s' should be keywords" mapcar #[(kwd) "└ \n\"Aº?¡è├─┼ !┼!#ç" [assoc kwd indices error "`%s' is not a valid slot name for %s" prin1-to-string name] 5] pairlis ptr val result endp quote caar key eval assoc apply vector] 6 "\
MAKE$STRUCTURE$INSTANCE NAME ARGS => new struct NAME
A struct of type NAME is created, some slots might be initialized
according to ARGS (the &rest argument of MAKE-name)."])